package com.atguigu.rabbitmq.routing;

import com.atguigu.rabbitmq.util.ConnectionUtil;
import com.rabbitmq.client.*;

import java.io.IOException;

public class Consumer1 {
    
    public static void main(String[] args) throws Exception {
        
        // 获取RabbitMQ连接
        Connection connection = ConnectionUtil.getConnection();
        
        // 创建通道，用于和RabbitMQ服务器交互
        Channel channel = connection.createChannel();
        
        // 定义队列名称
        String queue1Name = "test_direct_queue1";
        
        // channel.queueDeclare(queue1Name,true,false,false,null);
        
        // 创建一个默认的消费者，用于处理队列中的消息
        Consumer consumer = new DefaultConsumer(channel) {
            
            /**
             * 消费者接收到消息时的处理方法
             * @param consumerTag 消费者标签
             * @param envelope 信封，包含消息的元数据
             * @param properties 消息的属性
             * @param body 消息内容
             * @throws IOException 如果处理过程中发生I/O错误
             */
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                
                // 打印消息内容
                System.out.println("body：" + new String(body));
                // 打印消费者的处理说明
                System.out.println("Consumer1 将日志信息打印到控制台.....");
                
            }
            
        };
        
        // 开始消费队列中的消息，自动确认消息接收
        channel.basicConsume(queue1Name, true, consumer);
        
    }
    
    
}